<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

    <script>

        /*
Promise.all() 和 Promise.allSettled() 都是用于处理多个 Promise 的并发执行，但它们在处理 Promise 失败（rejected）时的行为有本质区别。

1. Promise.all()
行为：等待所有传入的 Promise 全部成功完成（fulfilled）。
成功：当所有 Promise 都成功时，返回一个新 Promise，该 Promise 会以一个包含所有结果的数组进行 resolve。结果数组的顺序与传入的 Promise 顺序一致。
失败：只要任何一个传入的 Promise 失败（rejected），Promise.all() 返回的 Promise 就会立即被 reject，并抛出第一个失败的错误。其余 Promise 的结果将被忽略。
适用场景：当你需要所有异步操作都成功才能继续执行后续逻辑时。例如，一个页面需要同时加载多个 API 数据，任何一个加载失败，整个页面就无法正常显示。
示例：

javascript

const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(42);
const promise3 = Promise.reject(new Error('出错了！'));

Promise.all([promise1, promise2, promise3])
  .then(values => {
    console.log(values); // 不会执行
  })
  .catch(error => {
    console.error(error.message); // 输出: "出错了！"
  });
即使 promise1 和 promise2 成功了，因为 promise3 失败，Promise.all 立即进入 catch。

2. Promise.allSettled()  (allSetteled =>全部解决)
行为：等待所有传入的 Promise 无论成功或失败都完成（settled）。
结果：返回一个新 Promise，当所有 Promise 都 settled（即 fulfilled 或 rejected）后，该 Promise 会以一个描述每个 Promise 结果的对象数组进行 resolve。
不会失败：Promise.allSettled() 本身不会被 reject。即使所有传入的 Promise 都失败了，它也会成功 resolve，并返回包含所有失败信息的数组。
返回值结构：结果数组中的每个对象都有一个 status 属性：
如果 Promise 成功 (fulfilled)，对象为 { status: 'fulfilled', value: result }。
如果 Promise 失败 (rejected)，对象为 { status: 'rejected', reason: error }。
适用场景：当你需要知道每一个异步操作的结果，无论成功还是失败，并且希望所有操作都完成后才进行下一步处理时。例如，批量发送请求，需要统计成功和失败的数量，或者对每个请求的结果进行独立处理。
示例：

javascript
深色版本
const promise1 = Promise.resolve(3);
const promise2 = Promise.resolve(42);
const promise3 = Promise.reject(new Error('出错了！'));

Promise.allSettled([promise1, promise2, promise3])
  .then(results => {
    results.forEach((result, index) => {
      if (result.status === 'fulfilled') {
        console.log(`Promise ${index + 1} 成功:`, result.value);
        // 输出: Promise 1 成功: 3
        // 输出: Promise 2 成功: 42
      } else {
        console.log(`Promise ${index + 1} 失败:`, result.reason.message);
        // 输出: Promise 3 失败: 出错了！
      }
    });
  });
// 注意：这里没有 catch，因为 allSettled 不会 reject
总结对比
特性	Promise.all()	            Promise.allSettled()
所有成功	✅ 成功，返回结果数组	    ✅ 成功，返回状态和结果数组
任一失败	❌ 立即失败，返回第一个错误	✅ 成功，返回包含所有状态（含错误）的数组
返回值	    成功时：结果数组	             总是：状态描述对象数组 ({status, value/reason})
是否可能reject	是	                    否
核心思想	原子性：要么全成功，要么因第一个失败而整体失败。	容错性：等待所有完成，收集所有结果（无论好坏）。
        */
    </script>
</body>
</html>